#ifndef __ITERRAIN_CONTENTS_GENERATOR_H__
#define __ITERRAIN_CONTENTS_GENERATOR_H__

#include <cstdint>
#include "TerrainChunk.h"
#include "Engine/Vector3.hpp"

using namespace PocketSurvival::Engine;

namespace PocketSurvival
{
    class ITerrainContentsGenerator
    {
    public:
        virtual uint32_t getOceanLevel() = 0;

        virtual Vector3 findCoarseSpawnPosition() = 0;

        virtual float calculateOceanShoreDistance(float x, float z) = 0;

        virtual float calculateHeight(float x, float z) = 0;

        virtual int32_t calculateTemperature(float x, float z) = 0;

        virtual int32_t calculateHumidity(float x, float z) = 0;

        virtual float calculateMountainRangeFactor(float x, float z) = 0;

        virtual void generateChunkContentsPass1(TerrainChunk *chunk) = 0;

        virtual void generateChunkContentsPass2(TerrainChunk *chunk) = 0;

        virtual void generateChunkContentsPass3(TerrainChunk *chunk) = 0;

        virtual void generateChunkContentsPass4(TerrainChunk *chunk) = 0;
    };
}

#endif